package com.lanou3g.code0412.inter;

/**
 * Created by dllo on 18/4/12.
 */
// 定义接口与定义类一样
// 区别是class关键字改为interface关键字
public interface USB {
    // 接口与类一样,可以写属性,可以写方法
    // 但是不同的是,接口中只能写
    // 常量(大写)和抽象方法

    // 由于接口里只能出现常量
    // 所以定义常量时,可以不写public static final
    public static final String VOLTAGE = "5V";

    //int A = 3;

    // 接口里只能有public的抽象方法
    // 不能够有普通方法,它也不是类,也没有构造方法
    // 所以,方法的public abstract可以不写
    public abstract String sendData();

    public abstract void receiveData(String data);

}
// 接口和抽象类的区别
// 1.语法角度:
// 1.1抽象类本质上还是一个类,在使用时,抽象类中可以
// 存在普通方法和成员变量
// 而接口是单独的类型,在使用时,只能存在静态常量和
// 1.2 接口中所有的方法可以不写abstract也是抽象方法
//     而抽象类中的抽象方法,必须写abstract关键字
// 1.3 抽象类必须被继承,才能够使用,而接口必须被实现才能被使用
//    一个类只能继承一个类,但是可以实现多个接口
// 2.含义角度
// 当我们使用抽象类的时候,通常想表达一种"is a"的含义,即当前类
// 和被继承类之间存在着概念上的"父子关系";
// 而使用接口的时候,通常是想表达一种"like a"的含义,即只是确定
// 当前类具有某种能力(具有某些方法),而没有概念上的"父子关系"
// 3.使用角度
// 当一个类有确切的父子关系时,我们使用抽象类,否则使用接口(即使不确定
// 是否有确切的父子关系,我们会优先考虑接口,毕竟类只能继承一次);
// 如果一个类中有实体方法,那么我们只能使用抽象类